The present invention relates to virtual appliances, and more particularly, the present invention relates to a method and apparatus for providing a virtual appliance.
With the development of virtual technology, a virtual machine is able to provide various applications and services, like a true, stand-alone computer. On this basis, one or more virtual machines may be packaged together to provide a pre-built software environment, thus forming a virtual appliance. For instance, in one example, three virtual machines: VM1, VM2 and VM3, may be used to build a virtual appliance, wherein the three virtual machines are installed with different software programs to perform different functions, respectively. For example, virtual machine VM1 may be used to perform a variety of applications, VM2 may be used to provide a database, and VM3 may be used as a proxy server. These “dedicated” virtual machines are packaged together to provide a complete operating environment collectively, thereby forming a virtual appliance. In this example, the multiple virtual machines forming the virtual appliance are maintained, updated, and managed collectively as a unit.
To form a desired virtual appliance, there are a variety of standards and approaches for packaging virtual machines that appear in the prior art. Open Virtualization Format (OVF) is a standard in common use currently, for packaging and distributing virtual appliances. With the OVF standard, virtual appliances may be installed and deployed across platforms simply and flexibly. According to the OVF standard, multiple virtual machines are packaged into one OVF package. Typically, an OVF package comprises an OVF descriptor with suffix .ovf, and further optionally comprises a manifest with suffix .mf and a certificate with suffix .cert. The OVF descriptor is used to describe configuration information of each virtual machine included in the OVF package. In addition, the OVF package also generally includes disk image files of respective virtual machines forming the virtual appliance. These files store data in virtual disks in the form of images. Accordingly, a disk image file usually has a large size, often about hundreds of Gigabytes (GB) or more.
According to user demands for various virtual appliances, many data centers are configured to provide virtual appliances, such as in an OVF form, to users according to user needs. In particular, in a cloud computing environment, especially in an Infrastructure as a Service (IaaS) mode, a cloud data center may provide virtual machines and virtual appliances to diverse users. However, as mentioned before, an image file involved in a virtual appliance often reaches hundreds of GB in size, and therefore, it often takes a long time to read such a file and transfer it over the network to a user terminal. For example, today's cloud data centers usually need to take tens of minutes to provide a single virtual machine. On the other hand, many cloud data centers use centralized servers to store and distribute virtual machine related data. Such centralized servers have limited network interfaces, which becomes a bottleneck for processing a large number of network requests. Therefore, in a case where a large population of users request access to or to obtain virtual appliances at the same time, the performance of cloud data centers providing virtual appliances will be further reduced.
Therefore it is desired to improve the existing solutions to improve the performance of the provisioning of virtual appliances.